layui.config({
	base: ctx+'/plugin/',
}).extend({
	authtree: 'authtree/authtree',
}).use(['table', 'layer','form','authtree'], function(){
  var form = layui.form;
  var table = layui.table
  var layer = layui.layer;
  var authtree = layui.authtree;
  var $ = layui.jquery;
  //创建树
  var createTable = function(){
	 layer.load(2);
	 table.render({
	        elem: '#user-table',
	        page : true,
	        height : 500,
	        defaultToolbar :[],
	        toolbar : '#toolbar',
	        url: ctx+'/sys/user/list',
	        cols: [[ //表头
	             {field: 'id', title: 'ID',hide : true}
	            ,{field: 'name', title: '用户姓名', width:'120',align:'center'}
	            ,{field: 'username', title: '用户账号', width:'120',align:'center'}
	            ,{field: 'deptName', title: '所属部门名称', width:'120',align:'center'}
	            ,{field: 'status', title: '状态', width:'120',align:'center',templet : function(data){
	            	if(data.status == 1){
	            		return "<span class='layui-badge layui-bg-blue'>激活</span>";
	            	}else if(data.status == 0){
	            		return "<span class='layui-badge layui-bg-gray'>冻结</span>";
	            	}else{
	            		return "出现错误";
	            	}
	            }}
	            ,{field: 'telephone', title: '手机号码', width:'120',align:'center'}
	            ,{field: 'mail', title: '邮箱', width:'200',align:'center'}
	            ,{field: 'operator', title: '操作人', width:'120',align:'center'}
	            ,{field: 'operateTime', title: '操作时间', width:'180',align:'center'}
	            ,{field: 'remark', title: '备注信息', width:'120',align:'center'}
	            ,{field: 'ops', title: '操作', width:'300',align:'center',
	            	templet: '#tool'}
	          ]],
	       done: function () {
              layer.closeAll('loading');
           }
	   });
  };
  
  //角色列表
  createTable();
  
  var rolesStr ;
  function renderRole(){
	  commons.ajax({
		  url : ctx+"/sys/role/list?type=1",
		  success : function(res){
			  var data = res.data;
			  var str = '';
			  $(data).each(function(i,val){
				  str += '<div class="trek-center"><input name="role" type="checkbox" value='+val.id+' title='+val.name+'></div>';
			  });
			  $('#roleForm').html(str);
			  form.render('checkbox');
			  rolesStr = str;
		  }
		  
	  });
  }
  
  // 刷新角色列表
  function refreshRole(){
	  $('#roleForm').html(rolesStr);
	  form.render('checkbox');
  }
  
  renderRole();
  
  table.on('tool(user-table)',function(obj){
	  var data = obj.data;
	  var layEvent = obj.event;
	  
	  if(layEvent == 'onOrOff'){
		  onOrOff(data.id);
	  }else if(layEvent == 'updateUser'){
		  updateUser(data);
	  }else if(layEvent == 'roleAlocate'){
		  roleAlocate(data);
	  }
  });
  
  table.on('toolbar(user-table)',function(obj){
	  var data = obj.data;
	  var layEvent = obj.event;
	  if(layEvent == 'add'){
		  addUser();
	  }
  });
  
  // 激活或者冻结
  function onOrOff(id){
	  commons.ajax({
		  url : ctx + '/sys/user/onOrOff',
		  data : {
			  'id' : id
		  },
		  success : function(res){
			  layer.msg(res.msg);
			  table.reload('user-table');
		  },
		  fail : function(res){
			  layer.msg(res.msg);
		  }
	  });
  }
  
  var indexMain ;
  var deptIndex;
  
  //部门选择按钮
  $('#deptName').click(function(){
	  $('#deptOpsType').val('update');
	  createDeptTree();
  });
  
  $('#addDeptName').click(function(){
	  $('#deptOpsType').val('add');
	  debugger;
	  createDeptTree();
  });
  
  
//创建部门树
  function createDeptTree(){
	  //渲染组织部门树
	  $.ajax({
			url: ctx+'/sys/dept/list',
			dataType: 'json',
			success: function(res){
	            var trees = res.data;
	            trees = authtree.listConvert(trees, {
	                primaryKey: 'id'
	                ,startPid: 0
	                ,parentKey: 'pid'
	                ,nameKey: 'name'
	                ,valueKey: 'id'
	            });
	            // 如果后台返回的不是树结构，请使用 authtree.listConvert 转换
	            authtree.render('#LAY-auth-tree-index', trees, {
					inputname: 'selectDept', 
					layfilter: 'lay-check-auth', 
					autowidth: true,
					autochecked :false,
					openall : true
				});
	        },
	        fail(res){
	        	layer.msg(res.msg);
	        }
	    });
	  
	  deptIndex = layer.open({
		  title : '组织部门选择',
  		  type: 1,
  		  area: ['600px', '480px'],
  		  content: $('#deptTree') 
	  });
  }
  
  $('#confirmDept').click(function(){
	  var checked = authtree.getChecked('#LAY-auth-tree-index');
	  if(checked.length > 1){
		  layer.msg('只能选择一个组织部门');
		  return false;
	  }
	  if(checked =null){
		  layer.msg('请选择组织部门');
		  return false;
	  }
	  var lastChecked = authtree.getLastChecked('#LAY-auth-tree-index');
	  //现在只能有一个元素了,直接去第一个元素就好了
	  var id = lastChecked[0];
	  //选择对应的表单元素
	  var datas = $('input[name=selectDept]');
	  var deptName = null;
	  $(datas).each(function(i,val){
		  if($(val).val() == id ){
			 deptName = $(val).attr('title');
			 return ;
		  }
	  });
	  //将数据回填到页面之上
	  if($('#deptOpsType').val() == 'update'){
		  $('#deptId').val(id);
		  $('#deptName').find('span').html(deptName);
	  }else if($('#deptOpsType').val() == 'add'){
		  $('#addDeptId').val(id);
		  $('#addDeptName').find('span').html(deptName);
	  }
	 
	  //关闭弹出层
	  layer.close(deptIndex);
  });
  
  // 更新用户信息
  function updateUser(data){
	  // 回填数据
	  form.val("updateForm",{
		  'id' : data.id,
		  'name' : data.name,
		  'telephone' : data.telephone,
		  'mail' : data.mail,
		  'daptId' : data.deptId,
		  'remark' : data.remark
	  });
	  //
	  $('#deptName').find('span').html(data.deptName);
	  //在打开这个弹出层之前,先要修改掉数据
	  indexMain =  layer.open({
				  title : '用户信息修改',
		  		  type: 1,
		  		  area: ['600px', '480px'],
		  		  content: $('#updateUserDialog') 
	  });
	  
  }
  
  // 人员信息修改提交
  form.on('submit(updateUserSubmit)',function(data){
	  commons.ajax({
		  url : ctx+"/sys/user/update",
		  data : data.field,
		  success : function(res){
			  layer.msg(res.msg);
			  layer.closeAll();
			  //清空表单的数据
			  $('#updateReset').click();
			  //刷新表单的内容
			  table.reload('user-table');
		  },
		  fail(res){
			  layer.msg(res.msg);
		  }
	  });
	  return false;
  });
  
  
  //人员新增
  form.on('submit(addUserSubmit)',function(data){
	  commons.ajax({
		  url : ctx+"/sys/user/add",
		  data : data.field,
		  success : function(res){
			  layer.msg(res.msg);
			  layer.closeAll();
			  //清空表单的数据
			  $('#updateReset').click();
			  //刷新表单的内容
			  table.reload('user-table');
		  },
		  fail(res){
			  layer.msg(res.msg);
		  }
	  });
	  return false;
  });
  
  // 角色分配
  function roleAlocate(data){
	  //首先查找该用户所有的角色列表
	  $('#roleId').val(data.id);
	  commons.ajax({
		  url : ctx+'/sys/userRole/list',
		  data : {
			  'id' : data.id
		  },
		  success : function(res){
			  var data = res.data;
			  // 直接走dom元素算了
			  refreshRole();
			  var roles = $('#roleForm').find('input[name=role]');
			  $(data).each(function(i,val){
				  $(roles).each(function(j,role){
					  if(val.roleId == $(role).val()){
						  $(role).attr('checked','checked');
					  }
				  });
			  });
			  form.render();
		  }
	  });
	  
	  layer.open({
		  title : '用户角色分配',
  		  type: 1,
  		  area: ['200px', '300px'],
  		  content: $('#roleDialog') ,
  		  btn: ['确定','取消'],
  		  yes: function(index, layero){
  			  var id = $('#roleId').val(); // 这个就是用户的id
	  		  var doms = $('#roleForm').find('input[name=role]:checked');
	  		  var params = '';
	  		  $(doms).each(function(i,val){
	  			  params += $(val).val() +","
	  		  });
	  		  params = params.substring(0,params.length-1);
	  		  
	  		  commons.ajax({
	  			  url : ctx+'/sys/userRole/allocate',
	  			  data:{
	  				  'id' : id,
	  				  'roleIds' : params
	  			  },
	  			  success : function(res){
	  				  layer.msg(res.msg);
	  				  layer.closeAll();
	  				  // 将checkbox都清除掉
	  				  doms = $('#roleForm').find('input[name=role]:checked')
	  				  $(doms).each(function(i,val){
	  					  $(val).remove('checked');
	  				  });
	  				  form.render('select');
	  			  },
	  			  fail : function(res){
	  				  layer.msg(res.msg);
	  			  }
	  		  });
  		  }
  		  ,btn2: function(index, layero){
  			  layer.close(index);
  		  }
	  });
  }
  
  // 新增用户
  function addUser(){
	  layer.open({
		  title : '用户新增',
  		  type: 1,
  		  area: ['350px', '500px'],
  		  content: $('#addUserDialog') 
	  });
  }
});